<?php 
/**
 * 
 * Libreria de calendario 
 * @author natanael
 * 
 */
   if (!defined('BASEPATH')) exit('No se permite el acceso directo a la libreria Chcalendario');

   class Chcalendario{
   
       public function calcularDias($fechapar,$fechaact = false)
       {
		   if ($fechaact == false)
		      $fechaact = date("Y-m-d");
       	
		    $fechapar = explode(' ',$fechapar);
		    $fechapar_arr=explode('-',$fechapar[0]);
		    $fechapar_mk=mktime(0,0,0,$fechapar_arr[1],$fechapar_arr[2],(int)$fechapar_arr[0]);
		    $fechapar_mk=intval($fechapar_mk);
		
		    $fechaact = explode(' ',$fechaact);
		    $fechaact_arr=explode('-',$fechaact[0]);
		    $fechaact_mk=mktime(0,0,0,$fechaact_arr[1],$fechaact_arr[2],$fechaact_arr[0]);
		    $fechaact_mk=intval($fechaact_mk);
		
		    $segundos_diferencia =$fechaact_mk-$fechapar_mk;
		    $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
		    
		    return  $dias_diferencia;
	   }
	   
	   function calcularHoras($fechapar,$fechaact = false)
	   {
	  		if ($fechaact == false)
		      $fechaact = date("Y-m-d");
       	
		    $fechapar = explode(' ',$fechapar);
		    $fechapar_arr=explode('-',$fechapar[0]);
		    if(count($fechapar) > 1){
		    	$horaspar_arr = explode(':',$fechapar[1]);
		    }else{
		    	$horaspar_arr = array(0,0,0);
		    }
		    $fechapar_mk=mktime(intval($horaspar_arr[0]),intval($horaspar_arr[1]),intval($horaspar_arr[2]),$fechapar_arr[1],$fechapar_arr[2],$fechapar_arr[0]);
			
		    $fechapar_mk=intval($fechapar_mk);
		
		    $fechaact = explode(' ',$fechaact);
		    $fechaact_arr=explode('-',$fechaact[0]);
		    if(count($fechaact) > 1){
		    	$horaact_arr = explode(':',$fechaact[1]);
		    }else{
		    	$horaact_arr = array(0,0,0);
		    }
		    $fechaact_mk=mktime(intval($horaact_arr[0]),intval($horaact_arr[1]),intval($horaact_arr[2]),$fechaact_arr[1],$fechaact_arr[2],$fechaact_arr[0]);
		    $fechaact_mk=intval($fechaact_mk);
		
		    $segundos_diferencia =$fechaact_mk-$fechapar_mk;
		    $horas_diferencia = $segundos_diferencia / (60 * 60);
		    
		    return  $horas_diferencia;
	   }

	   public function semana($semanaRequerida)
       {    
       		
       	    $semanaActual = date("W");    //Semana Actual 
       	    
            $cantidadDias = ($semanaRequerida * 7);  //Cantidad de dias a Carcular
            
            $diasToatal = array();
            
            while ($cantidadDias >= 0){
            	//Todos los dias de la semana
               $diasToatal[] = date("Y-m-d|W-Y",mktime(0,0,0,date('m'),date('d')-$cantidadDias,date('Y'))); 
               $cantidadDias--;
               
            }
                  
            $semana = array();
           
            /*
             * Recoremos todos los dia para ponerlo en un array de su semana;
             */
            foreach ($diasToatal as $k){
               
            	$dia = explode('|', $k);
               $semana[$dia[1]][] = $dia[0];
            }
            $diasInicioFinal = array();
            
            //Este foreach se utiliza para separar el numero de la semana del anio y obtener las fechas
           
			
            foreach ($semana as $k => $j){
             
            	$sem = explode('-',$k);
                 	
            	if ($sem[0] == date("W") && $sem[1] == date("Y")) {
            		$diasInicioFinal[$k][] =  $j[0].' 00:00:00';
            		$diasInicioFinal[$k][] =  date("Y-m-d").' 59:59:59';
            		break;
            		
            	 }

            	   if (@$j[6] == null && strlen(@$j[6]) < 5) 
            	       continue;
            	   
            	    $diasInicioFinal[$k][] =  @$j[0].' 00:00:00';
            	    $diasInicioFinal[$k][] =  @$j[6].' 59:59:59';
            	    
         
                 }
            return $diasInicioFinal;
       	    
       	   
       } 
       
       public function ultimo($array)
       {
	        $dia = $array[count($array)-1].'+'.$array[0];
	        return $dia;
       }

       public function semana2()
       {
 	          for ($i = 0;$i < 370; $i++ ){
	            $dia[] = date( "Y-m-d",mktime(0,0,0,date('m'),date('d')-$i,date('Y')) );
              }
    
  	         return $dia;  	
       }

       public function sumaFechas($ndias, $fecha = false) 
       {
            if ($fecha == false)
               $fecha = date('Y-m-d');    
       	
            list($año,$mes,$dia)=split("-",$fecha);
            $nueva = mktime(0,0,0, $mes,$dia,$año) + $ndias * 24 * 60 * 60;
            $nuevaFecha = date("Y-m-d",$nueva);

            return $nuevaFecha;  
         
       }
       /**
        * 
        * RETORNA UN ARRAY CON LA FECHA INICIAL Y LA FECHA FINAL DE UNA
        * CANTIDAD DE SEMANAS EN ESPECIFICO...
        * 
        * @param array $semanaArray
        * @return $array
        */
       public function getFechasInicioYFinalPorSemanas($semanaArray){
       
	       $contador = 1;
	       $fechaInicioYFinal = array();
       
	       foreach ($semanaArray as $semana => $fecha){
	       	
		       	if($contador == 1){
		       		$fechaI = explode(" ", $fecha[0]);
		       		$fechaInicioYFinal['fechaInicio'] = $fechaI[0]; 
		       	}
		       	if($contador == count($semanaArray)){
		       		$fechaF = explode(" ", $fecha[1]); 
		       		
		       		$fechaInicioYFinal['fechaFinal'] = $fechaF[0]; 
		       	}
		       	
		       	$contador++;
	       }
	     
	       return $fechaInicioYFinal;
       } 
}